perm filename VARLEL.SAI[PIX,HPM] blob
sn#453513 filedate 1979-06-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "VARLEL"
C00006 00003 PRINT("Number of pages across:") NFX←CVD(INCHWL)
C00010 ENDMK
C⊗;
BEGIN "VARLEL"
DEFINE VRN='350; comment device 350, gents;
comment
CONO/CONI bits for the VRN (Varian Plotter)
for the meanings of most of these bits, refer to the
Varian "SERVICE AND MAINTENANCE MANUAL STATOS 41/42 SERIES PRINTER/PLOTTERS";
DEFINE
SCNCMP='100000 , comment scan completed (reado);
NOTRDY='40000 , comment device not ready (reado);
BUFBZY='20000 , comment buffer busy (reado);
PRCBZY='10000 , comment paper controller busy (reado);
FRMBOT='4000 , comment bottom of form (reado);
REDRDY='1000 , comment read ready (reado);
NOTONL='400 , comment not on line (reado);
SUPPLO='200 , comment supplies low (reado);
VIDBZY='100 , comment video busy (reado);
INTTST='40 , comment interface test mode (writo);
DATARQ='20 , comment data request (reado);
INTENA='10 , comment interrupt enable (readw);
PIEN33='4 , comment PI bit 33 (readw);
PIEN34='2 , comment PI bit 34 (readw);
PIEN35='1 ; comment PI bit 35 (readw);
DEFINE RASTERWRITE='740;
DEFINE LINESYNC='443;
DEFINE RESETAUTO='445;
DEFINE ONESTEP='464;
DEFINE SLEW='665;
REQUIRE "VIXHDR.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER CMDCNT,CMDRUN,CMDWD,RUNCNT,FOO,OCH; BOOLEAN LINES;
INTEGER I,J,K,NFX,NFY,NF,CMD;
PROCEDURE VSINIT; BEGIN OCH←GETCHAN;
OPEN(OCH,"DSK",0,0,19,1,FOO,FOO); ENTER(OCH,"VARLEL.DAT[TMP,HPM]",FOO);
CMDCNT←0; RUNCNT←0; CMDWD←0; CMDRUN←0; END;
REQUIRE VSINIT INITIALIZATION;
REQUIRE "{}{}" DELIMITERS;
DEFINE VSEND={
CMDCNT←CMDCNT+1; CMDWD←(CMDWD LSH 9) LOR CMD;
IF CMDCNT=4 THEN
BEGIN
IF CMDWD=(CMDWD ROT 18) THEN
IF CMDWD=CMDRUN THEN RUNCNT←RUNCNT+1 ELSE
BEGIN
IF RUNCNT=1 THEN OUT(OCH,CVOS(CMDRUN)&'15&'12) ELSE
IF RUNCNT>1 THEN
OUT(OCH,CVOS(('770 LSH 27)+(RUNCNT LSH 18)+(CMDRUN LAND '777777))&'15&'12);
RUNCNT←1; CMDRUN←CMDWD;
END
ELSE
BEGIN
IF RUNCNT=1 THEN OUT(OCH,CVOS(CMDRUN)&'15&'12) ELSE
IF RUNCNT>1 THEN
OUT(OCH,CVOS(('770 LSH 27)+(RUNCNT LSH 18)+(CMDRUN LAND '777777))&'15&'12);
RUNCNT←0; CMDRUN←0;
OUT(OCH,CVOS(CMDWD)&'15&'12);
END;
CMDCNT←0; CMDWD←0;
END};
PRINT("Number of pages across:"); NFX←CVD(INCHWL);
PRINT("Number of pages vertically:"); NFY←CVD(INCHWL);
PRINT("Outlines?"); LINES←(INCHWL LAND '137)="Y";
NF←NFX*NFY;
BEGIN "BIT FILE"
INTEGER ROW;
STRING ARRAY SF[1:NF];
SAFE INTEGER ARRAY PIC[1:NF,0:10], PCH[1:NF];
FOR I←1 STEP 1 UNTIL NF DO
BEGIN DO PRINT("BIT FILE ",I,":") UNTIL PFLDIM(SF[I]←INCHWL)>0;
PCH[I]←OPNPFL(SF[I],PIC[I,0]); END;
CMD←RASTERWRITE; VSEND; CMD←LINESYNC; VSEND; CMD←RESETAUTO; VSEND;
FOR ROW←1 STEP 1 UNTIL NFY DO
BEGIN "ROWS"
INTEGER MAXL,NFL,NFH;
NFL←(ROW-1)*NFX+1; NFH←NFL+NFX-1;
MAXL←PIC[NFL,PCLN];
FOR I←NFL+1 STEP 1 UNTIL NFH DO MAXL←MAXL MAX PIC[I,PCLN];
IF ROW=NFY THEN MAXL←MAXL+400;
FOR I←0 STEP 1 UNTIL MAXL-1 DO
BEGIN
INTEGER PT,RH,MI,MIP,LO,HI; SAFE INTEGER ARRAY SCNLIN[0:117];
FOR K←NFL STEP 1 UNTIL NFH DO
BEGIN
SAFE INTEGER ARRAY SCNLI[0:PIC[K,LNWD]+3];
IF I<PIC[K,PCLN] THEN
ARRYIN(PCH[K],SCNLI[0],PIC[K,LNWD]);
IF LINES THEN
BEGIN
SCNLI[1]←SCNLI[1] LOR '400000000000;
SCNLI[PIC[K,LNWD]-1]←SCNLI[PIC[K,LNWD]-1] LOR
(1 LSH (PIC[K,LNWD]*36-PIC[K,LNBY]));
END;
MI←(PIC[K,LNWD]-1)%2+1; MIP←(4224*(K-NFL+.5)/NFX)/36+.5;
LO←(1-MI) MAX -MIP; HI←(PIC[K,LNWD]-1-MI) MIN (117-MIP);
FOR J←LO STEP 1 UNTIL HI DO
SCNLIN[J+MIP]←SCNLIN[J+MIP] LOR SCNLI[J+MI];
END;
COMMENT IF LINES THEN FOR K←0 STEP 1 UNTIL NFX DO
DPB(1,POINT(1,SCNLIN[(K*4223%NFX)%36],(K*4223%NFX) MOD 36));
IF LINES ∧ (ROW=1∧I=0 ∨ ROW=NFY∧I=MAXL-400) THEN ARRCLR(SCNLIN,-1);
RH←117; WHILE RH>0 ∧ SCNLIN[RH]=0 DO RH←RH-1;
IF SCNLIN[RH]≠0 THEN
FOR J←0 STEP 2 UNTIL RH DO
BEGIN
CMD←LDB(PT←POINT(8,SCNLIN[J],7)); VSEND;
CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND;
CMD←((SCNLIN[J] LAND '17) LSH 4) LOR (SCNLIN[J+1] LSH -32); VSEND;
CMD←LDB(PT←POINT(8,SCNLIN[J+1],11)); VSEND;
IF J<116 THEN
BEGIN
CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND;
END;
END;
BEGIN CMD←ONESTEP; VSEND; END;
END;
END "ROWS";
CMD←RESETAUTO; VSEND;
RELEASE(OCH);
END "BIT FILE";
END "VARLEL";